/*	--- 守护线程 --- 

Daemon  n.  守护线程;背景程序;守护进程;守护程序
------------------------

Java程序入口就是由JVM启动main线程，main线程又可以启动其他线程。

当所有线程都运行结束时，JVM才退出，JVM进程结束。

---------------

如果有一个线程没有退出，JVM进程就不会退出。

所以，必须保证'所有线程'都能及时结束。

但是有一种线程的目的就是无限循环，例如，一个定时触发任务的线程： */
class TimerThread extends Thread {
	@Override
	public void run() {
		while (true) {
			System.out.println(LocalTime.now());

			try {
				Thread.sleep(1000);
			} catch (InterruptedException e) {
				break;
			}
		}
	}
}


/*
如果这个线程不结束，JVM进程就无法结束。

问题是，由谁负责结束这个线程？

然而这类线程经常没有负责人来负责结束它们。但是，当其他线程结束时，JVM进程又必须要结束，怎么办？

答案是: 使用守护线程（Daemon Thread）。

---------------------------

'守护线程'是指为其他线程服务的线程。

在JVM中，所有'非守护线程'都执行完毕后，无论有没有守护线程，虚拟机都会自动退出。


因此，JVM退出时，不必关心'守护线程'是否已结束。


如何创建守护线程呢？
方法和普通线程一样，只是在调用start()方法前，调用.setDaemon(true)把该线程标记为守护线程：	*/
Thread t = new MyThread();
t.setDaemon(true);
t.start();


/*
在守护线程中，编写代码要注意：
	守护线程不能持有任何需要关闭的资源. 例如: 打开文件等.

因为虚拟机退出时，守护线程没有任何机会来关闭文件，这会导致数据丢失。

*/



/*	---- 守护线程 の 小结 ---- 

1. ‘守护线程’是为其他线程服务的线程；

2. ‘所有 非守护线程’ 都执行完毕后，虚拟机退出；

3. ‘守护线程’ 不能持有 需要关闭的资源（如打开文件等）。

*/
















